// pages/company_structure/company_structure.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    hasLoad: false,
    deptRowId: '',
    deptId: '',
    deptName: '',
    deptList: [],
    staffList: [],

    oprFlag: false,
    oprList: [
      { id: 1, name: '修改当前部门名称', },
      { id: 0, name: '删除部门', },
    ],
    subDeptShow: false,
    editDeptNameShow: false,

    deptAdd: '',        // 子部门名称
    deptEdit: '',       // 修改部门名称
  },

  // 双向绑定 报警告处理
  inputIpt(e) {},
  // 清空输入框内容
  clearInput(e) {
    let key = e.currentTarget.dataset.key
    this.setData({
      [key]: '',
    })
  },

  // nav 跳转
  navTo(e) {
    let deptId = e.currentTarget.dataset.item.department_id
    wx.navigateTo({
      url: '../company_structure_detl/company_structure_detl?id=' + deptId,
    })
  },

  // 添加成员
  addMember(e) {
    let { deptRowId, deptName, } = this.data
    wx.setStorageSync('defValue', {
      department_id: deptRowId,
      ['department_id;value']: deptName,
    })
    wx.navigateTo({
      url: '/DIYPages/general_edit/general_edit?status=add&entity=all_employee_inf',
    })
  },
  // 添加子部门
  addSubDept(e) {
    this.setData({
      subDeptShow: e.currentTarget.dataset.show,
    })
  },
  // 更多管理
  toggleMoreOpr(e) {
    this.setData({
      oprFlag: !this.data.oprFlag,
    })
  },
  selectOpr(e) {
    let id = e.detail.id
    if(id) {
      this.setData({
        editDeptNameShow: true,
        deptEdit: this.data.deptName,
      })
    } else {
      wx.showModal({
        title: '提示',
        content: '确认删除该部门？',
        success: (res) => {
          if(res.confirm) this.delDept()
        },
      })
    }
  },
  // 设置当前部门名称
  editDeptName(e) {
    let show = e.currentTarget.dataset.show
    this.setData({
      editDeptNameShow: show,
    })
  },

  // 接口
  // 获取公司架构列表
  getDeptList() {
    let post = {
      limit: 0,
      oby: 'input_time',
      page: 1,
    }
    wx.showLoading()
    this.setData({
      hasLoad: false,
    })
    wx.$post(3, 'BaseTable/query_all_department', post).then(res => {
      if(res.errcode !== 0) return
      let rows = res.data.row,
          row = rows[0]
      this.setData({
        deptRowId: row.row_id,
        deptId: row.department_id,
        deptName: row.department_name,
        deptList: row.children,
      })
      this.getDeptStaffList(row.department_id, row.row_id)
    })
  },
  // 获取部门工作人员
  getDeptStaffList(deptId, deptRowId) {
    // let post = {
    //   limit: 0,
    //   oby: 'input_time',
    //   page: 1,
    //   SearchWhere: [
    //     // {
    //     //   CompareValue: deptId,
    //     //   CompareWith: 'department_id',
    //     //   Operator: '=',
    //     //   or: 0,
    //     // },
    //     {
    //       CompareValue: deptRowId,
    //       CompareWith: 'row_id',
    //       Operator: '=',
    //       or: 0,
    //     },
    //   ],
    // }
    let post = {
      limit: 0,
      table_id: 'all_employee_inf',
      oby: 'all_employee_inf.input_time',
      page: 1,
      SearchWhere: [
        {
          CompareValue: deptRowId,
          CompareWith: 'all_employee_inf.department_id',
          Operator: '=',
          or: 0,
        },
      ],
    }
    // wx.$post(3, 'BaseTable/query_all_employee_inf', post).then(res => {
    wx.$post(3, 'DynamicQuery/query_dynamic_v1', post).then(res => {
      wx.hideLoading()
      this.setData({
        hasLoad: true,
      })
      if(res.errcode !== 0) return
      let rows = res.data.row
      this.setData({
        staffList: rows,
      })
    })
  },
  // 保存添加子部门
  saveAddDept(e) {
    let { deptAdd, deptId, } = this.data
    if(!deptAdd) {
      wx.$toast('请先输入部门名称！')
      return
    }
    let post = {
      department_name: deptAdd,
      parent_department_id: deptId,
      system_id: wx.getStorageSync('system_id'),
    }
    wx.showLoading({ mask: true, })
    wx.$post(3, 'BaseTable/create_department', post).then(res => {
      if(res.errcode !== 0) return
      wx.$toast('添加成功！')
      this.setData({
        subDeptShow: false,
      })
      this.getDeptList()
    })
  },
  // 保存修改当前部门名称
  saveEditDeptName(e) {
    let { deptEdit, deptId, } = this.data
    if(!deptEdit) {
      wx.$toast('请先输入部门名称！')
      return
    }
    let post = {
      department_id: deptId,
      department_name: deptEdit,
      // parent_department_id: parent_department_id,
      system_id: wx.getStorageSync('system_id'),
    }

    wx.showLoading({ mask: true, })
    wx.$post(3, 'BaseTable/alter_department', post).then(res => {
      if(res.errcode !== 0) return
      wx.$toast('修改成功！')
      this.setData({
        editDeptNameShow: false,
      })
      this.getDeptList()
    })
  },
  // 删除部门
  delDept() {
    wx.showLoading({ mask: true, })
    wx.$post(3, 'BaseTable/del_department', { department_id: this.data.deptId, }).then(res => {
      if(res.errcode !== 0) return
      wx.$toast('删除成功！')
      this.getDeptList()
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    wx.$setBarTitle();

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getDeptList()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})
